﻿Imports System.Collections.Generic
Imports System.Data
Imports Biz
Imports System.Data.SqlClient


''' <summary>
''' Clase de la capa de acceso a datos para el manejo de la entidad Solicitud_Seleccion
''' </summary>
''' <remarks></remarks>
Public Class DALSolicitud_Seleccion

    Private Shared m_Instance As DALSolicitud_Seleccion
    Private Shared m_Semaforo As New Object
    Private m_TDGSolicitud_Seleccion As TDGSolicitud_Seleccion


    Public Function Insert(obj As cSolicitud_Seleccion) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            iResultado = m_TDGSolicitud_Seleccion.Insert(database.Conexion, obj.Busq_Numero, obj.Sel_Numero, obj.oSolicitud.Soli_Numero, obj.SolSel_Obs)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.Solicitud_SeleccionFalloAlta(ex)
        End Try

    End Function

    Public Function Delete(obj As cSolicitud_Seleccion) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGSolicitud_Seleccion.Delete(database.Conexion, obj.Busq_Numero, obj.Sel_Numero, obj.oSolicitud.Soli_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.Solicitud_SeleccionFalloBaja(ex)
        End Try

    End Function

    Public Function Sel(obj As cSolicitud_Seleccion) As cSolicitud_Seleccion
        Dim dr As SqlDataReader
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGSolicitud_Seleccion.Find(database.Conexion, obj.Busq_Numero, obj.Sel_Numero, obj.oSolicitud.Soli_Numero)

            If dr.HasRows Then

                dr.Read()

                obj.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(0))
                obj.Sel_Numero = Utils.Convert.ToInt16(dr.GetValue(1))
                obj.oSolicitud.Soli_Numero = Utils.Convert.ToInt32(dr.GetValue(2))
                obj.SolSel_Obs = Utils.Convert.ToStr(dr.GetValue(3))
                obj.DVH = Utils.Convert.ToInt32(dr.GetValue(4))

                obj.oSolicitud.Soli_Fecha = Utils.Convert.ToDateTime(dr.GetValue(5))
                obj.oSolicitud.oPostulante.oTipo_Documento.TDoc_Codigo = Utils.Convert.ToStr(dr.GetValue(6))
                obj.oSolicitud.oPostulante.Postu_NroDoc = Utils.Convert.ToStr(dr.GetValue(7))
                obj.oSolicitud.oBusqueda.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(8))
                obj.oSolicitud.Soli_Observaciones = Utils.Convert.ToStr(dr.GetValue(9))
                obj.oSolicitud.oMedio_Busqueda.MedB_Codigo = Utils.Convert.ToInt16(dr.GetValue(10))

                obj.oSolicitud.oPostulante.Postu_NombreAp = Utils.Convert.ToStr(dr.GetValue(11))
                obj.oSolicitud.oPostulante.Postu_FNac = Utils.Convert.ToDateTime(dr.GetValue(12))
                obj.oSolicitud.oPostulante.Postu_Telefono = Utils.Convert.ToStr(dr.GetValue(13))
                obj.oSolicitud.oPostulante.Postu_Mail = Utils.Convert.ToStr(dr.GetValue(14))

                dr.Close()

            Else
                obj = Nothing
            End If

            database.Desconectar()

            Return obj
        Catch ex As Exception
            Throw New Excepciones.Solicitud_SeleccionFalloBuscar(ex)
        End Try
    End Function

    Public Function SelectPorSeleccion(Busq_Numero As Int16, Sel_Numero As Int16) As Collection
        Dim dr As SqlDataReader
        Dim colObjetos As Collection
        Dim objAux As cSolicitud_Seleccion
        Dim database As cDatabase


        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGSolicitud_Seleccion.FindAllPorBusqueda(database.Conexion, Busq_Numero, Sel_Numero)

            If dr.HasRows Then

                colObjetos = New Collection

                Do While dr.Read

                    objAux = New cSolicitud_Seleccion

                    objAux.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(0))
                    objAux.Sel_Numero = Utils.Convert.ToInt16(dr.GetValue(1))
                    objAux.oSolicitud.Soli_Numero = Utils.Convert.ToInt32(dr.GetValue(2))
                    objAux.SolSel_Obs = Utils.Convert.ToStr(dr.GetValue(3))
                    objAux.DVH = Utils.Convert.ToInt32(dr.GetValue(4))

                    objAux.oSolicitud.Soli_Fecha = Utils.Convert.ToDateTime(dr.GetValue(5))
                    objAux.oSolicitud.oPostulante.oTipo_Documento.TDoc_Codigo = Utils.Convert.ToStr(dr.GetValue(6))
                    objAux.oSolicitud.oPostulante.Postu_NroDoc = Utils.Convert.ToStr(dr.GetValue(7))
                    objAux.oSolicitud.oBusqueda.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(8))
                    objAux.oSolicitud.Soli_Observaciones = Utils.Convert.ToStr(dr.GetValue(9))
                    objAux.oSolicitud.oMedio_Busqueda.MedB_Codigo = Utils.Convert.ToInt16(dr.GetValue(10))

                    objAux.oSolicitud.oPostulante.Postu_NombreAp = Utils.Convert.ToStr(dr.GetValue(11))
                    objAux.oSolicitud.oPostulante.Postu_FNac = Utils.Convert.ToDateTime(dr.GetValue(12))
                    objAux.oSolicitud.oPostulante.Postu_Telefono = Utils.Convert.ToStr(dr.GetValue(13))
                    objAux.oSolicitud.oPostulante.Postu_Mail = Utils.Convert.ToStr(dr.GetValue(14))

                    colObjetos.Add(objAux)

                Loop

                dr.Close()

            Else

                colObjetos = Nothing

            End If

            database.Desconectar()

            Return colObjetos
        Catch ex As Exception
            Throw New Excepciones.Solicitud_SeleccionFalloConsultar(ex)
        End Try
    End Function

    Public Shared Function Instance() As DALSolicitud_Seleccion
        If m_Instance Is Nothing Then
            SyncLock (m_Semaforo)
                If m_Instance Is Nothing Then
                    m_Instance = New DALSolicitud_Seleccion
                End If
            End SyncLock
        End If

        Return m_Instance
    End Function

    Private Sub New()
        m_TDGSolicitud_Seleccion = TDGSolicitud_Seleccion.Instance()
    End Sub

End Class
